#include<bits/stdc++.h>
using namespace std;
inline int read()
{
	int res=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){res=(res<<1)+(res<<3)+(c^48);c=getchar();}
	return res*f;
}
void write(int x)
{
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int n;
#define pii pair<int,int>
#define fi first
#define se second
const int inf=1e9;
namespace sub
{
	set<pii>s;
	multiset<pii>ans;
	void solve()
	{
		for(int i=1;i<=n;i++)
		{
			char op=getchar();int l,r;
			while(op!='A'&&op!='R') op=getchar();
			l=read(),r=read()-1;
			if(op=='A') 
			{
				auto it=s.lower_bound({l,r});
				if(it!=s.end()) ans.insert({0,it->se-l+1});
				if(it!=s.begin())
				{
					--it;
					ans.insert({0,r-it->fi+1});
				}
				s.insert({l,r});
				ans.insert({r-l+1,r-l+1});
			}
			else 
			{
				auto it=s.upper_bound({l,r});
				if(it!=s.end()) ans.erase(ans.find({0,it->se-l+1}));
				--it;
				if(it!=s.begin())
				{
					--it;
					ans.erase(ans.find({0,r-it->fi+1}));
				}
				s.erase(it);
				ans.erase(ans.find({r-l+1,r-l+1}));
			}
			write(ans.begin()->se),putchar('\n');
		}
	}
}
struct Elaina
{
	pii t[1000005<<2];
	#define mid ((l+r)>>1)
	#define ls (root<<1)
	#define rs (root<<1|1)
	pair<int,pii>stk[300001*21];int top;
	inline void update(int root){t[root]=min(t[ls],t[rs]);}
	void insert(int x,pii v,int root=1,int l=1,int r=1e6)
	{
		if(l==r) 
		{
			if(t[root]>v) stk[++top]={l,t[root]},t[root]=v;
			return;
		}
		if(x<=mid) insert(x,v,ls,l,mid);
		else insert(x,v,rs,mid+1,r);
		update(root);
	}
	void change(int x,pii v,int root=1,int l=1,int r=1e6)
	{
		if(l==r) return t[root]=v,void();
		if(x<=mid) change(x,v,ls,l,mid);
		else change(x,v,rs,mid+1,r);
		update(root);
	}
	pii query(int x,int y,int root=1,int l=1,int r=1e6)
	{
		if(l>=x&&r<=y) return t[root];
		pii res={inf,inf};
		if(x<=mid) res=min(res,query(x,y,ls,l,mid));
		if(y>mid) res=min(res,query(x,y,rs,mid+1,r));
		return res;
	}
	inline void del(int x){while(top>x) change(stk[top].fi,stk[top].se),--top;}
}mnseg[2];
struct emiya
{
	pii t[1000005<<2];
	pair<int,pii>stk[300001*21];int top;
	inline void update(int root){t[root]=max(t[ls],t[rs]);}
	void insert(int x,pii v,int root=1,int l=1,int r=1e6)
	{
		if(l==r) 
		{
			if(t[root]<v) stk[++top]={l,t[root]},t[root]=v;
			return;
		}
		if(x<=mid) insert(x,v,ls,l,mid);
		else insert(x,v,rs,mid+1,r);
		update(root);
	}
	void change(int x,pii v,int root=1,int l=1,int r=1e6)
	{
		if(l==r) return t[root]=v,void();
		if(x<=mid) change(x,v,ls,l,mid);
		else change(x,v,rs,mid+1,r);
		update(root);
	}
	pii query(int x,int y,int root=1,int l=1,int r=1e6)
	{
		if(l>=x&&r<=y) return t[root];
		pii res={0,0};
		if(x<=mid) res=max(res,query(x,y,ls,l,mid));
		if(y>mid) res=max(res,query(x,y,rs,mid+1,r));
		return res;
	}	
	inline void del(int x){while(top>x) change(stk[top].fi,stk[top].se),--top;}
}mxseg[2];
namespace Nene
{
	vector<pii>t[500005<<2];
	void insert(int x,int y,pii v,int root=1,int l=1,int r=n)
	{
		if(l>=x&&r<=y) return t[root].push_back(v),void();
		if(x<=mid) insert(x,y,v,ls,l,mid);
		if(y>mid) insert(x,y,v,rs,mid+1,r);
	}
	int now=inf,sz=inf;
	void solve(int root=1,int l=1,int r=n)
	{
		int tmns0=mnseg[0].top,tmxs0=mxseg[0].top,tmns1=mnseg[1].top,tmxs1=mxseg[1].top;
		int tmpn=now,tmps=sz;
		for(pii x:t[root])
		{
			pii p=mxseg[0].query(x.fi,x.se);
			if(p.fi&&(x.se-p.fi+1<now||(x.se-p.fi+1==now&&p.se-x.fi+1<sz))) 
				now=x.se-p.fi+1,sz=p.se-x.fi+1; 
			p={inf,inf};
			if(x.se+1<=1e6) p=mnseg[1].query(x.se+1,1e6);
			if(p.fi<inf&&(now||(!now&&p.fi-x.fi+1<sz))) now=0,sz=p.fi-x.fi+1;
			p=mnseg[0].query(x.fi,x.se);
			if(p.fi<inf&&(p.fi-x.fi+1<now||(p.fi-x.fi+1==now&&x.se-p.se+1<sz))) 
				now=p.fi-x.fi+1,sz=x.se-p.se+1;
			p={0,0};if(x.fi>1) p=mxseg[1].query(1,x.fi-1);
			if(p.fi&&(now||(!now&&x.se-p.fi+1<sz))) now=0,sz=x.se-p.fi+1;
			if(x.se-x.fi+1<=now) now=x.se-x.fi+1,sz=x.se-x.fi+1;
			mnseg[0].insert(x.se,{x.se,x.fi});mxseg[0].insert(x.fi,x);
			mnseg[1].insert(x.fi,{x.se,0});mxseg[1].insert(x.se,{x.fi,0});
		}
		if(l==r) write(sz),putchar('\n');
		if(l!=r) solve(ls,l,mid),solve(rs,mid+1,r);
		mnseg[0].del(tmns0),mxseg[0].del(tmxs0),mnseg[1].del(tmns1),mxseg[1].del(tmxs1);
		now=tmpn,sz=tmps;
	}
}
multiset<pair<pii,int> >s;
int main()
{
	freopen("stone.in","r",stdin);
	freopen("stone.out","w",stdout);
	n=read();
	if(n>5e4) return sub::solve(),0;
	for(int i=1;i<=n;i++)
	{
		char op=getchar();int l,r;
		while(op!='A'&&op!='R') op=getchar();
		l=read(),r=read()-1;
		if(op=='A') s.insert({{l,r},i});
		else 
		{
			auto it=s.lower_bound({{l,r},0});
			Nene::insert(it->se,i-1,it->fi);
			s.erase(it);
		}
	}
	memset(mnseg[0].t,0x3f,sizeof mnseg[0].t);
	memset(mnseg[1].t,0x3f,sizeof mnseg[1].t);
	for(auto it:s) Nene::insert(it.se,n,it.fi);
	Nene::solve();
	return 0;
}
